// PROGRAMA : IDCPC002 OPCAO: 'CNM'
// BIBLIOTECA : SISP
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA / INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : EDU/FM DATA: 26/06/92
// OBJETIVO : CONSULTA CADASTRO P/NOME DA PESSOA E/OU NOME DA MAE
// E DATA DE NASCIMENTO
// ATUALIZACOES DATA
// PROGRAMA : IDCPC002 28/09/1999
// BIBLIOTECA : SISP
// PROGRAMADOR :
// OBJETIVO : ALTERACAO DE TELA OPCAO: 'CNM'
// OBS : ESTE PROGRAMA FOI REESTRUTURADO POR SOLON MIRANDA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcpc002A;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idctc001;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.Idclc001;
import br.com.vti.sisp_sicrim.antigo.model.SicControle;
import br.com.vti.sisp_sicrim.antigo.model.Tablele;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpc002 OBJETIVO : CONSULTA CADASTRO P/NOME DA PESSOA E/OU NOME DA MAE E DATA DE NASCIMENTO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/idcpc002")
public class Idcpc002 {
	// Views utilizadas
	DidCadastro vwDidcad = new DidCadastro();
	SicControle vwDvecon = new SicControle();
	// Telas/relatorios utilizados
	Idcpc002A idcpc002A;
	Idctc001 idctc001;
	// Includes utilizados
	Idclc001 idclc001 = new Idclc001();
	Tablele tablele = new Tablele();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais(); // Sisst001 sisst001 = new
													// Sisst001 ();
	Idccc001 idccc001;

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcpc002 idcpc002Anterior;
	String faseproc = "0";
	int nroReg = 1;

	private Idcpc002A preMapas() {
		idccc001 = new Idccc001(result, sessao);
		idcpc002A = new Idcpc002A(true, sessao);
		idctc001 = new Idctc001(true, sessao);
		idctc001.setDataCorrente(UtilBean.obtemDataDia());
		idctc001.setConf("S");
		idcpc002A.setDataCorrente(UtilBean.obtemDataDia());
		// Par�grafo: r0()
		return idcpc002A;
	}

	public Idcpc002(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcpc002A idcpc002A, Idctc001 idctc001) {
		try {
			main(idcpc002A, idctc001);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcpc002A pidcpc002A, Idctc001 pidctc001) throws Exception {
		if (pidcpc002A == null && pidctc001 == null) {
			primeiraVez = true;
			idcpc002A = preMapas();
			idcpc002A.setNavegar("../idcpc002/executar");
			result.include("idcpc002A", idcpc002A);
			sessao.setAtributo("IDCPC002", this);
			idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcpc002A, pidctc001);
		}

		idcpc002A.receberTela(false, result);
		if (idcpc002A.getOperacao().equals("FIM")) {
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
			return;
		}
		if (!UtilBean.funcao.equals(UtilBean.ctt_processa)) {
			idcpc002A.enviarMensagem(null, "");
			sessao.setAtributo("IDCPC002", this);
			result.include("idcpc002A", idcpc002A);
			idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (!idcpc002A.getOperacao().equals("CNM")) {
			praFora();
		}
		if (faseproc.equals("1") && idctc001.getConf().equals("N")) {
			faseproc = "0";
			vwDidcad.fecha();
			sessao.setAtributo("IDCPC002", this);
			result.include("idcpc002A", idcpc002A);
			idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		// Analisa condi��es
		if (!idcpc002A.getNomide().trim().equals("") && idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() == 0) {
			if (vwDidcad.leituraNomeIdentMaiorig(idcpc002A.getNomide().trim())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			faseproc = "1";
		} else if (idcpc002A.getNomide().trim().equals("") && !idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() == 0) {
			if (vwDidcad.leituraNomeMaeMaiorig(idcpc002A.getNommae().trim())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			faseproc = "1";
		} else if (idcpc002A.getNomide().trim().equals("") && idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() != 0) {
			if (vwDidcad.leituraDataNascMaiorig(idcpc002A.getDtnas())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			faseproc = "1";
		} else if (!idcpc002A.getNomide().trim().equals("") && !idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() == 0) {
			if (vwDidcad.consultaNomeIdentNomeMae(idcpc002A.getNomide().trim(), idcpc002A.getNommae().trim())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			if (vwDidcad.totalRegistros() == 0) {
				idcpc002A.enviarMensagem("operacao", "");
				faseproc = "0";
				vwDidcad.fecha();
				sessao.setAtributo("IDCPC002", this);
				result.include("idcpc002A", idcpc002A);
				idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			faseproc = "1";
		} else if (!idcpc002A.getNomide().trim().equals("") && idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() != 0) {
			if (vwDidcad.consultaNomeIdentDataNasc(idcpc002A.getNomide().trim(), idcpc002A.getDtnas())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			if (vwDidcad.totalRegistros() == 0) {
				idcpc002A.enviarMensagem("operacao", "");
				faseproc = "0";
				vwDidcad.fecha();
				sessao.setAtributo("IDCPC002", this);
				result.include("idcpc002A", idcpc002A);
				idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			faseproc = "1";
		} else if (idcpc002A.getNomide().trim().equals("") && !idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() != 0) {
			if (vwDidcad.consultaNomeMaeDataNasc(idcpc002A.getNommae().trim(), idcpc002A.getDtnas())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			if (vwDidcad.totalRegistros() == 0) {
				idcpc002A.enviarMensagem("operacao", "");
				faseproc = "0";
				vwDidcad.fecha();
				sessao.setAtributo("IDCPC002", this);
				result.include("idcpc002A", idcpc002A);
				idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			faseproc = "1";
		} else if (!idcpc002A.getNomide().trim().equals("") && !idcpc002A.getNommae().trim().equals("") && idcpc002A.getDtnas() != 0) {
			if (vwDidcad.consultaNomeIdentNomeMaeDataNasc(idcpc002A.getNomide(), idcpc002A.getNommae().trim(), idcpc002A.getDtnas())) {
				maoNaRoda();
				idctc001.setMensagem("");
			} else {
				maoNaRoda();
				idctc001.setMensagem("�ltimo registro - Confirme para iniciar novamente!");
			}
			// 348
			if (vwDidcad.totalRegistros() == 0) {
				idcpc002A.enviarMensagem("operacao", "");
				faseproc = "0";
				vwDidcad.fecha();
				sessao.setAtributo("IDCPC002", this);
				result.include("idcpc002A", idcpc002A);
				idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			faseproc = "1";
		} else {
			idcpc002A.enviarMensagem("nomide", "PREENCHA CAMPO");
			faseproc = "0";
			vwDidcad.fecha();
			sessao.setAtributo("IDCPC002", this);
			result.include("idcpc002A", idcpc002A);
			idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		if (faseproc.equals("0")) {
			sessao.setAtributo("IDCPC002", this);
			result.include("idcpc002A", idcpc002A);
			idcpc002A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		} else {
			sessao.setAtributo("IDCPC002", this);
			result.include("idctc001", idctc001);
			idctc001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void maoNaRoda() throws Exception {
		Idccc001 idccc001 = new Idccc001(result, sessao);
		idctc001 = idccc001.executar(vwDidcad);
		idctc001.setConf("S");
		if (!idctc001.getOperacao().equals("CNM")) {
			praFora();
		}
	}

	private void praFora() {
		funcoes.sissm001(result, sessao);
	}

	// SISCERRO}}} //UtilBean.mensagemTexto("!  ERROR NUMERO:" *ERROR-NR
	// "    LINHA:" *ERROR-LINE " PROGRAMA:" idcpc002A.getNomeClasse()
	// idctc001.getNomeClasse() "!");

	private void restaurarEstados(Idcpc002A pidcpc002A, Idctc001 pidctc001) {
		this.idcpc002Anterior = (Idcpc002) sessao.getAtributo("IDCPC002");
		if (pidcpc002A != null) {
			idcpc002A = pidcpc002A;
		} else {
			idcpc002A = this.idcpc002Anterior.idcpc002A;
		}
		idcpc002A.setSessao(sessao);
		if (pidctc001 != null) {
			idctc001 = pidctc001;
		} else {
			idctc001 = this.idcpc002Anterior.idctc001;
		}
		idctc001.setSessao(sessao);
		this.faseproc = this.idcpc002Anterior.faseproc;
		this.vwDidcad = this.idcpc002Anterior.vwDidcad;
	}
}
